//
// Created by Lenovo on 2025/7/28.
//
#ifndef UNTITLED_ASDFASDFAS_H
#define UNTITLED_ASDFASDFAS_H


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sqlite3.h>
#include <string.h>

// 宏定义（常量集中管理）
#define DB_NAME "qianjinzhilu.db"
#define MAX_GEAR_NAME 50
#define MAX_HERO_NAME 100
#define INIT_BASE_VALUE 5  // 初始基础战斗力
#define MONSTER_DATA_COUNT 35

// 装备结构体（提前定义，避免函数声明时未识别）
typedef struct {
    int gear_id;
    char gear_name[MAX_GEAR_NAME];
    int gear_effect;
    int gear_slots_id; // 1:头, 2:胸, 3:腿, 4:脚, 5:武器
} Gear;

// 英雄结构体（存储装备ID和总加成）
typedef struct {
    char name[MAX_HERO_NAME];
    int gear_total;  // 装备总加成
    int slots_head;
    int slots_chest;
    int slots_leg;
    int slots_foot;
    int slots_weapon;
} Hero;

// 英雄展示结构体（用于面板显示）
typedef struct {
    int hero_id;
    char hero_name[MAX_HERO_NAME];
    int total_value;  // 总战斗力（基础+装备+怪物收益）
    char head_gear[MAX_GEAR_NAME];
    char chest_gear[MAX_GEAR_NAME];
    char leg_gear[MAX_GEAR_NAME];
    char foot_gear[MAX_GEAR_NAME];
    char weapon_gear[MAX_GEAR_NAME];
} HeroDisplay;

// 全局变量（存储战斗累计收益，避免装备同步时被覆盖）

// 函数声明（结构体已提前定义，可正常使用）
void start();
// 装备与英雄
int load_gear_database(Gear** gear_db, int* gear_count);
int load_hero(Hero* hero, const char* name);
int update_hero(const Hero* hero);
// 战斗与装备逻辑
void sync_gear_value_to_battle(int* value_H);
Gear get_random_gear(const Gear* gear_db, int gear_count);
int calculate_total_value(const Hero* hero, const Gear* gear_db, int gear_count);
// 怪物与战斗
char** get_monster_data();
void free_monster_data(char** data);
int get_random_num(const int arr[], int length);
void generate_monsters(int day, int* m1, int* m2);
int battle(int* day, int current_value);
// 展示与交互
void gear_change(int* value_H);
void show_hero_panel();
void choice_hero(int day, int* value_H);
// 工具函数
const char* get_slot_name(int slot_id);
void clear_input_buffer();

#endif //UNTITLED_ASDFASDFAS_H